@atomist/sdm-pack-sloc
Version:
Extension Pack for an Atomist SDM to integrate code metrics
85 lines (84 loc) • 2.26 kB
TypeScript
import { Project, ProjectFile } from "@atomist/automation-client";
export interface Language {
name: string;
/**
* First extension must be definitive one to pass to SLOC
*/
extensions: string[];
}
/**
* Statistics about a particular language. See sloc API for further information
*/
export interface CodeStats {
language: Language;
/**
* Total number of lines
*/
total: number;
/**
* Number of lines of source code
*/
source: number;
/**
* Number of comment lines
*/
comment: number;
single: number;
block: number;
}
export interface FileReport {
stats: CodeStats;
file: ProjectFile;
}
export interface LanguageStats {
language: Language;
stats: CodeStats;
}
/**
* Report about a project's files in a given language
*/
export declare class LanguageReport implements LanguageStats {
language: Language;
fileReports: FileReport[];
constructor(language: Language, fileReports: FileReport[]);
/**
* Return stats for each language
* @return {CodeStats[]}
*/
readonly stats: CodeStats;
}
/**
* Consolidate the given stats for a particular language
* @param {Language} language
* @param {CodeStats[]} stats
* @return {CodeStats}
*/
export declare function consolidate(language: Language, stats: CodeStats[]): CodeStats;
/**
* Report about lines of code in various languages.
*/
export declare class LanguagesReport {
languageReports: LanguageReport[];
constructor(languageReports: LanguageReport[]);
readonly languagesScanned: Language[];
/**
* Return only the found languages
* @return {CodeStats[]}
*/
readonly relevantLanguageReports: LanguageReport[];
}
export interface LanguageReportRequest {
language: Language;
/**
* Narrow down search--eg to exclude test
*/
glob?: string;
}
/**
* Use the sloc library to compute code statistics
* @param {Project} p
* @param {string} request
* @return {Promise<LanguageReport>}
*/
export declare function reportForLanguage(p: Project, request: LanguageReportRequest): Promise<LanguageReport>;
export declare function reportForLanguages(p: Project, requests?: LanguageReportRequest[]): Promise<LanguagesReport>;