codedna 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codedna-0.2.0/.env.example +38 -0
- codedna-0.2.0/.github/workflows/codedna.yml +53 -0
- codedna-0.2.0/.gitignore +26 -0
- codedna-0.2.0/.python-version +1 -0
- codedna-0.2.0/PKG-INFO +93 -0
- codedna-0.2.0/README.md +52 -0
- codedna-0.2.0/codedna/__init__.py +4 -0
- codedna-0.2.0/codedna/ai_fingerprint.py +223 -0
- codedna-0.2.0/codedna/analyzer.py +245 -0
- codedna-0.2.0/codedna/api.py +1505 -0
- codedna-0.2.0/codedna/auth.py +372 -0
- codedna-0.2.0/codedna/bus_factor.py +259 -0
- codedna-0.2.0/codedna/cli.py +1965 -0
- codedna-0.2.0/codedna/db.py +336 -0
- codedna-0.2.0/codedna/git_hook.py +212 -0
- codedna-0.2.0/codedna/integrations/__init__.py +1 -0
- codedna-0.2.0/codedna/integrations/github_bot.py +259 -0
- codedna-0.2.0/codedna/integrations/jira.py +166 -0
- codedna-0.2.0/codedna/integrations/lemonsqueezy.py +236 -0
- codedna-0.2.0/codedna/interview.py +298 -0
- codedna-0.2.0/codedna/onboarding.py +195 -0
- codedna-0.2.0/codedna/plan.py +184 -0
- codedna-0.2.0/codedna/protection.py +211 -0
- codedna-0.2.0/codedna/rate_limit.py +83 -0
- codedna-0.2.0/codedna/scorer.py +221 -0
- codedna-0.2.0/codedna/sprint_health.py +187 -0
- codedna-0.2.0/codedna/survey.py +104 -0
- codedna-0.2.0/codedna/tech_debt.py +232 -0
- codedna-0.2.0/dashboard/.env.local.example +2 -0
- codedna-0.2.0/dashboard/.gitignore +36 -0
- codedna-0.2.0/dashboard/README.md +36 -0
- codedna-0.2.0/dashboard/app/ai-compare/page.tsx +183 -0
- codedna-0.2.0/dashboard/app/api/auth/login/route.ts +52 -0
- codedna-0.2.0/dashboard/app/api/auth/logout/route.ts +35 -0
- codedna-0.2.0/dashboard/app/api/auth/me/route.ts +32 -0
- codedna-0.2.0/dashboard/app/api/auth/register/route.ts +48 -0
- codedna-0.2.0/dashboard/app/api/billing/checkout/route.ts +47 -0
- codedna-0.2.0/dashboard/app/billing/page.tsx +253 -0
- codedna-0.2.0/dashboard/app/bus-factor/page.tsx +185 -0
- codedna-0.2.0/dashboard/app/commits/page.tsx +89 -0
- codedna-0.2.0/dashboard/app/debt/page.tsx +351 -0
- codedna-0.2.0/dashboard/app/favicon.ico +0 -0
- codedna-0.2.0/dashboard/app/files/page.tsx +92 -0
- codedna-0.2.0/dashboard/app/fonts/GeistMonoVF.woff +0 -0
- codedna-0.2.0/dashboard/app/fonts/GeistVF.woff +0 -0
- codedna-0.2.0/dashboard/app/globals.css +28 -0
- codedna-0.2.0/dashboard/app/interview/page.tsx +225 -0
- codedna-0.2.0/dashboard/app/layout.tsx +58 -0
- codedna-0.2.0/dashboard/app/login/page.tsx +81 -0
- codedna-0.2.0/dashboard/app/onboarding/page.tsx +347 -0
- codedna-0.2.0/dashboard/app/page.tsx +75 -0
- codedna-0.2.0/dashboard/app/pricing/page.tsx +284 -0
- codedna-0.2.0/dashboard/app/protected/page.tsx +182 -0
- codedna-0.2.0/dashboard/app/register/page.tsx +84 -0
- codedna-0.2.0/dashboard/app/settings/integrations/page.tsx +167 -0
- codedna-0.2.0/dashboard/app/sprints/page.tsx +396 -0
- codedna-0.2.0/dashboard/components/AnlamaGrafigi.tsx +85 -0
- codedna-0.2.0/dashboard/components/AuthProvider.tsx +53 -0
- codedna-0.2.0/dashboard/components/ClientProviders.tsx +25 -0
- codedna-0.2.0/dashboard/components/CommitTable.tsx +186 -0
- codedna-0.2.0/dashboard/components/CostInfoTooltip.tsx +44 -0
- codedna-0.2.0/dashboard/components/FeatureGate.tsx +59 -0
- codedna-0.2.0/dashboard/components/FileHeatmap.tsx +112 -0
- codedna-0.2.0/dashboard/components/HataBanner.tsx +22 -0
- codedna-0.2.0/dashboard/components/LanguageSwitcher.tsx +35 -0
- codedna-0.2.0/dashboard/components/NavClient.tsx +60 -0
- codedna-0.2.0/dashboard/components/OverviewTitles.tsx +47 -0
- codedna-0.2.0/dashboard/components/QuickInsights.tsx +118 -0
- codedna-0.2.0/dashboard/components/RiskBadge.tsx +53 -0
- codedna-0.2.0/dashboard/components/SummaryCards.tsx +100 -0
- codedna-0.2.0/dashboard/components/UpgradeBanner.tsx +30 -0
- codedna-0.2.0/dashboard/lib/api.ts +116 -0
- codedna-0.2.0/dashboard/lib/auth.ts +131 -0
- codedna-0.2.0/dashboard/lib/i18n/en.ts +288 -0
- codedna-0.2.0/dashboard/lib/i18n/index.tsx +87 -0
- codedna-0.2.0/dashboard/lib/i18n/tr.ts +288 -0
- codedna-0.2.0/dashboard/lib/plan.ts +122 -0
- codedna-0.2.0/dashboard/next-env.d.ts +5 -0
- codedna-0.2.0/dashboard/next.config.mjs +9 -0
- codedna-0.2.0/dashboard/package-lock.json +1896 -0
- codedna-0.2.0/dashboard/package.json +26 -0
- codedna-0.2.0/dashboard/postcss.config.mjs +8 -0
- codedna-0.2.0/dashboard/tailwind.config.ts +26 -0
- codedna-0.2.0/dashboard/tsconfig.json +26 -0
- codedna-0.2.0/hooks/post-commit +28 -0
- codedna-0.2.0/pyproject.toml +65 -0
- codedna-0.2.0/uv.lock +949 -0
- codedna-0.2.0/vscode-extension/node_modules/.bin/tsc +1 -0
- codedna-0.2.0/vscode-extension/node_modules/.bin/tsserver +1 -0
- codedna-0.2.0/vscode-extension/node_modules/.package-lock.json +46 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/LICENSE +21 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/README.md +15 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/assert/strict.d.ts +8 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/assert.d.ts +1062 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/async_hooks.d.ts +605 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/buffer.buffer.d.ts +471 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/buffer.d.ts +1936 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/child_process.d.ts +1475 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/cluster.d.ts +577 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/disposable.d.ts +16 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/index.d.ts +9 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/console.d.ts +452 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/constants.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/crypto.d.ts +4590 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/dgram.d.ts +597 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/dns/promises.d.ts +479 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/dns.d.ts +871 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/domain.d.ts +170 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/events.d.ts +977 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/fs/promises.d.ts +1270 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/fs.d.ts +4375 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/globals.d.ts +172 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/globals.typedarray.d.ts +38 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/http.d.ts +2049 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/http2.d.ts +2712 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/https.d.ts +578 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/index.d.ts +93 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/inspector.generated.d.ts +3966 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/module.d.ts +539 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/net.d.ts +1031 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/os.d.ts +506 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/package.json +140 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/path.d.ts +200 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/perf_hooks.d.ts +961 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/process.d.ts +1961 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/punycode.d.ts +117 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/querystring.d.ts +152 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/readline/promises.d.ts +162 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/readline.d.ts +589 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/repl.d.ts +430 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/sea.d.ts +153 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/stream/consumers.d.ts +38 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/stream/promises.d.ts +90 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/stream/web.d.ts +533 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/stream.d.ts +1698 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/string_decoder.d.ts +67 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/test.d.ts +1787 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/timers/promises.d.ts +108 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/timers.d.ts +286 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/tls.d.ts +1259 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/trace_events.d.ts +197 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/ts5.6/index.d.ts +93 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/tty.d.ts +208 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/url.d.ts +964 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/util.d.ts +2331 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/v8.d.ts +809 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/vm.d.ts +1001 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/wasi.d.ts +181 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/events.d.ts +97 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/worker_threads.d.ts +715 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/node/zlib.d.ts +598 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/vscode/LICENSE +21 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/vscode/README.md +15 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/vscode/index.d.ts +21240 -0
- codedna-0.2.0/vscode-extension/node_modules/@types/vscode/package.json +26 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/LICENSE.txt +55 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/README.md +50 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/SECURITY.md +41 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/bin/tsc +2 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/bin/tsserver +2 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/_tsc.js +133818 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/_tsserver.js +659 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/_typingsInstaller.js +222 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.d.ts +22 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.es6.d.ts +23 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsc.js +8 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsserver.js +8 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/tsserverlibrary.js +21 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typesMap.json +497 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typescript.d.ts +11437 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typescript.js +200276 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/typingsInstaller.js +8 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/watchGuard.js +53 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
- codedna-0.2.0/vscode-extension/node_modules/typescript/package.json +120 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/LICENSE +21 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/README.md +6 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/agent.d.ts +31 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/api.d.ts +43 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/balanced-pool.d.ts +29 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/cache.d.ts +36 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/client.d.ts +108 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/connector.d.ts +34 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/content-type.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/cookies.d.ts +28 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/dispatcher.d.ts +256 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/errors.d.ts +149 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/eventsource.d.ts +61 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/fetch.d.ts +209 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/file.d.ts +39 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/filereader.d.ts +54 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/formdata.d.ts +108 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/global-origin.d.ts +7 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/handlers.d.ts +15 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/header.d.ts +4 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/index.d.ts +71 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/interceptors.d.ts +17 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-agent.d.ts +50 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-client.d.ts +25 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-errors.d.ts +12 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/mock-pool.d.ts +25 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/package.json +55 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/patch.d.ts +33 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/pool-stats.d.ts +19 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/pool.d.ts +39 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/proxy-agent.d.ts +28 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/readable.d.ts +65 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/retry-agent.d.ts +8 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/retry-handler.d.ts +116 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/util.d.ts +18 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/webidl.d.ts +228 -0
- codedna-0.2.0/vscode-extension/node_modules/undici-types/websocket.d.ts +150 -0
- codedna-0.2.0/vscode-extension/out/apiClient.js +103 -0
- codedna-0.2.0/vscode-extension/out/apiClient.js.map +1 -0
- codedna-0.2.0/vscode-extension/out/decorations.js +106 -0
- codedna-0.2.0/vscode-extension/out/decorations.js.map +1 -0
- codedna-0.2.0/vscode-extension/out/extension.js +154 -0
- codedna-0.2.0/vscode-extension/out/extension.js.map +1 -0
- codedna-0.2.0/vscode-extension/out/statusBar.js +156 -0
- codedna-0.2.0/vscode-extension/out/statusBar.js.map +1 -0
- codedna-0.2.0/vscode-extension/package-lock.json +58 -0
- codedna-0.2.0/vscode-extension/package.json +53 -0
- codedna-0.2.0/vscode-extension/src/apiClient.ts +99 -0
- codedna-0.2.0/vscode-extension/src/decorations.ts +81 -0
- codedna-0.2.0/vscode-extension/src/extension.ts +137 -0
- codedna-0.2.0/vscode-extension/src/statusBar.ts +140 -0
- codedna-0.2.0/vscode-extension/tsconfig.json +14 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# CodeDNA Faz 9 — Ortam Değişkenleri
|
|
2
|
+
# Bu dosyayı .env olarak kopyalayıp gerçek değerleri girin:
|
|
3
|
+
# cp .env.example .env
|
|
4
|
+
# .env dosyası GİT'E EKLENMEZ (.gitignore'dadır)
|
|
5
|
+
|
|
6
|
+
# ---------------------------------------------------------------------------
|
|
7
|
+
# Kimlik Doğrulama
|
|
8
|
+
# ---------------------------------------------------------------------------
|
|
9
|
+
# JWT imzalama anahtarı — production'da güçlü rastgele değer kullanın
|
|
10
|
+
# Örnek: python3 -c "import secrets; print(secrets.token_hex(32))"
|
|
11
|
+
CODEDNA_JWT_SECRET=degistir-bunu-guclu-rastgele-deger
|
|
12
|
+
|
|
13
|
+
# ---------------------------------------------------------------------------
|
|
14
|
+
# Lemon Squeezy Ödeme Entegrasyonu
|
|
15
|
+
# ---------------------------------------------------------------------------
|
|
16
|
+
# Lemon Squeezy API anahtarı (https://app.lemonsqueezy.com/settings/api)
|
|
17
|
+
LEMONSQUEEZY_API_KEY=your_lemonsqueezy_api_key_here
|
|
18
|
+
|
|
19
|
+
# Lemon Squeezy webhook secret (Settings > Webhooks > Secret)
|
|
20
|
+
LEMONSQUEEZY_WEBHOOK_SECRET=your_webhook_secret_here
|
|
21
|
+
|
|
22
|
+
# Lemon Squeezy mağaza ID'si
|
|
23
|
+
LEMONSQUEEZY_STORE_ID=your_store_id_here
|
|
24
|
+
|
|
25
|
+
# Plan başına Lemon Squeezy variant ID'leri
|
|
26
|
+
LS_VARIANT_PRO=your_pro_variant_id
|
|
27
|
+
LS_VARIANT_TEAM=your_team_variant_id
|
|
28
|
+
LS_VARIANT_ENTERPRISE=your_enterprise_variant_id
|
|
29
|
+
|
|
30
|
+
# ---------------------------------------------------------------------------
|
|
31
|
+
# CodeDNA Servis Yapılandırması
|
|
32
|
+
# ---------------------------------------------------------------------------
|
|
33
|
+
# API sunucu adresi (dashboard için)
|
|
34
|
+
NEXT_PUBLIC_API_URL=http://localhost:8000
|
|
35
|
+
|
|
36
|
+
# Auth DB yolu (repo db'sinden ayrı tutulan kullanıcı veritabanı)
|
|
37
|
+
# Varsayılan: ~/.codedna/auth.db
|
|
38
|
+
# CODEDNA_AUTH_DB_PATH=/özel/yol/auth.db
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
name: CodeDNA Analysis
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["**"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["**"]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
analyze:
|
|
11
|
+
name: AI Kod Analizi
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
pull-requests: write # PR yorumu bırakmak için gerekli
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Repo'yu çek (tam geçmiş)
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0 # single_commit_ratio için tam geçmiş gerekli
|
|
21
|
+
|
|
22
|
+
- name: Python kur
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: "3.10"
|
|
26
|
+
|
|
27
|
+
- name: CodeDNA kur
|
|
28
|
+
run: pip install codedna
|
|
29
|
+
|
|
30
|
+
- name: Tüm dosyaları tara (bilgi amaçlı)
|
|
31
|
+
run: codedna scan
|
|
32
|
+
continue-on-error: true
|
|
33
|
+
|
|
34
|
+
- name: Yüksek riskli dosya kontrolü (≥%50)
|
|
35
|
+
id: risk_check
|
|
36
|
+
run: |
|
|
37
|
+
codedna scan --min-risk 0.5
|
|
38
|
+
echo "scan_exit=$?" >> "$GITHUB_OUTPUT"
|
|
39
|
+
continue-on-error: true
|
|
40
|
+
|
|
41
|
+
- name: Kritik risk uyarısı (≥%70) — pipeline'ı BLOKLAMAZ
|
|
42
|
+
run: |
|
|
43
|
+
echo "::group::⚠️ Yüksek AI Riski Raporu"
|
|
44
|
+
codedna scan --min-risk 0.7 && echo "✅ %70 üzeri riskli dosya bulunamadı." || echo "⚠️ Yüksek riskli dosyalar tespit edildi — incelemeniz önerilir."
|
|
45
|
+
echo "::endgroup::"
|
|
46
|
+
continue-on-error: true
|
|
47
|
+
|
|
48
|
+
- name: PR yorumu bırak (sadece PR event'lerinde)
|
|
49
|
+
if: github.event_name == 'pull_request'
|
|
50
|
+
run: codedna pr-comment
|
|
51
|
+
env:
|
|
52
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
53
|
+
continue-on-error: true
|
codedna-0.2.0/.gitignore
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv
|
|
11
|
+
|
|
12
|
+
# CodeDNA veritabanları
|
|
13
|
+
*.db
|
|
14
|
+
.codedna.db
|
|
15
|
+
|
|
16
|
+
# Test repo'ları
|
|
17
|
+
tests/sample_repo/
|
|
18
|
+
|
|
19
|
+
# Dashboard build çıktısı
|
|
20
|
+
dashboard/.next/
|
|
21
|
+
dashboard/node_modules/
|
|
22
|
+
|
|
23
|
+
# Ortam değişkenleri — asla repoya girmesin
|
|
24
|
+
.env
|
|
25
|
+
.env.local
|
|
26
|
+
.env.*.local
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.10
|
codedna-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: codedna
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: AI kod şeffaflık aracı — her commit'te AI yazım oranını ve anlama skorunu ölçer
|
|
5
|
+
Project-URL: Homepage, https://codedna.dev
|
|
6
|
+
Project-URL: Repository, https://github.com/natureco-official/codedna
|
|
7
|
+
Project-URL: Issues, https://github.com/natureco-official/codedna/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/natureco-official/codedna/blob/main/CHANGELOG.md
|
|
9
|
+
Author-email: NatureCo <hello@natureco.me>
|
|
10
|
+
License: MIT
|
|
11
|
+
Keywords: ai,code-analysis,developer-tools,devops,git,transparency
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: bcrypt>=5.0.0
|
|
23
|
+
Requires-Dist: fastapi>=0.138.0
|
|
24
|
+
Requires-Dist: gitpython>=3.1.50
|
|
25
|
+
Requires-Dist: pyjwt>=2.13.0
|
|
26
|
+
Requires-Dist: rich>=15.0.0
|
|
27
|
+
Requires-Dist: tree-sitter-javascript>=0.25.0
|
|
28
|
+
Requires-Dist: tree-sitter-python>=0.25.0
|
|
29
|
+
Requires-Dist: tree-sitter-typescript>=0.23.2
|
|
30
|
+
Requires-Dist: tree-sitter>=0.25.2
|
|
31
|
+
Requires-Dist: typer>=0.26.7
|
|
32
|
+
Requires-Dist: uvicorn[standard]>=0.49.0
|
|
33
|
+
Provides-Extra: dashboard
|
|
34
|
+
Requires-Dist: next-cmd>=0.5.0; extra == 'dashboard'
|
|
35
|
+
Provides-Extra: dev
|
|
36
|
+
Requires-Dist: black>=24.0.0; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
41
|
+
|
|
42
|
+
# 🧬 CodeDNA — AI Kod Şeffaflık Aracı
|
|
43
|
+
|
|
44
|
+
Her commit'te hangi kodun AI tarafından yazıldığını tespit eden, geliştiricinin o kodu gerçekten anlayıp anlamadığını ölçen ve takım genelinde "anlama borcu" haritası çıkaran CLI aracı.
|
|
45
|
+
|
|
46
|
+
## Kurulum
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Geliştirme ortamı için
|
|
50
|
+
uv pip install -e .
|
|
51
|
+
|
|
52
|
+
# veya
|
|
53
|
+
pip install codedna
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Kullanım
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Git hook'u kur ve veritabanını oluştur
|
|
60
|
+
codedna init
|
|
61
|
+
|
|
62
|
+
# Tüm repoyu tara
|
|
63
|
+
codedna scan
|
|
64
|
+
|
|
65
|
+
# Son commit skorunu göster
|
|
66
|
+
codedna status
|
|
67
|
+
|
|
68
|
+
# Geçmiş commit skorlarını listele
|
|
69
|
+
codedna history
|
|
70
|
+
|
|
71
|
+
# Hook'u kaldır
|
|
72
|
+
codedna uninstall
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Nasıl Çalışır?
|
|
76
|
+
|
|
77
|
+
`codedna scan` komutu her desteklenen dosyayı (`*.py`, `*.js`, `*.ts`, `*.jsx`, `*.tsx`) analiz eder:
|
|
78
|
+
|
|
79
|
+
| Metrik | Açıklama |
|
|
80
|
+
|--------|----------|
|
|
81
|
+
| `comment_ratio > 0.3` | AI kodu genelde aşırı yorum yazar → +0.20 |
|
|
82
|
+
| `avg_function_length > 50` | AI büyük fonksiyon blokları üretir → +0.15 |
|
|
83
|
+
| `single_commit_ratio > 0.7` | Toplu yapıştırma işareti → +0.30 |
|
|
84
|
+
| Yüksek karmaşıklık + tek commit | AI imzası → +0.25 |
|
|
85
|
+
|
|
86
|
+
## Gereksinimler
|
|
87
|
+
|
|
88
|
+
- Python 3.10+
|
|
89
|
+
- Git kurulu olmalı
|
|
90
|
+
# test
|
|
91
|
+
# test2
|
|
92
|
+
# test4
|
|
93
|
+
# test5
|
codedna-0.2.0/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 🧬 CodeDNA — AI Kod Şeffaflık Aracı
|
|
2
|
+
|
|
3
|
+
Her commit'te hangi kodun AI tarafından yazıldığını tespit eden, geliştiricinin o kodu gerçekten anlayıp anlamadığını ölçen ve takım genelinde "anlama borcu" haritası çıkaran CLI aracı.
|
|
4
|
+
|
|
5
|
+
## Kurulum
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Geliştirme ortamı için
|
|
9
|
+
uv pip install -e .
|
|
10
|
+
|
|
11
|
+
# veya
|
|
12
|
+
pip install codedna
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Kullanım
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Git hook'u kur ve veritabanını oluştur
|
|
19
|
+
codedna init
|
|
20
|
+
|
|
21
|
+
# Tüm repoyu tara
|
|
22
|
+
codedna scan
|
|
23
|
+
|
|
24
|
+
# Son commit skorunu göster
|
|
25
|
+
codedna status
|
|
26
|
+
|
|
27
|
+
# Geçmiş commit skorlarını listele
|
|
28
|
+
codedna history
|
|
29
|
+
|
|
30
|
+
# Hook'u kaldır
|
|
31
|
+
codedna uninstall
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Nasıl Çalışır?
|
|
35
|
+
|
|
36
|
+
`codedna scan` komutu her desteklenen dosyayı (`*.py`, `*.js`, `*.ts`, `*.jsx`, `*.tsx`) analiz eder:
|
|
37
|
+
|
|
38
|
+
| Metrik | Açıklama |
|
|
39
|
+
|--------|----------|
|
|
40
|
+
| `comment_ratio > 0.3` | AI kodu genelde aşırı yorum yazar → +0.20 |
|
|
41
|
+
| `avg_function_length > 50` | AI büyük fonksiyon blokları üretir → +0.15 |
|
|
42
|
+
| `single_commit_ratio > 0.7` | Toplu yapıştırma işareti → +0.30 |
|
|
43
|
+
| Yüksek karmaşıklık + tek commit | AI imzası → +0.25 |
|
|
44
|
+
|
|
45
|
+
## Gereksinimler
|
|
46
|
+
|
|
47
|
+
- Python 3.10+
|
|
48
|
+
- Git kurulu olmalı
|
|
49
|
+
# test
|
|
50
|
+
# test2
|
|
51
|
+
# test4
|
|
52
|
+
# test5
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Farklı AI kod asistanlarının bıraktığı örüntüleri ayırt eder.
|
|
3
|
+
|
|
4
|
+
ÖNEMLİ UYARI:
|
|
5
|
+
Bu kesin bir tespit DEĞİL — örüntü tabanlı sezgisel bir TAHMİN modelidir.
|
|
6
|
+
Sonuçlar yanlış pozitif/negatif içerebilir. Kesinlik iddia edilmez.
|
|
7
|
+
Kullanıcıya bu bağlamda sunulmalıdır.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import re
|
|
13
|
+
from dataclasses import dataclass
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
from typing import Optional
|
|
16
|
+
|
|
17
|
+
from codedna.db import get_connection
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# ---------------------------------------------------------------------------
|
|
21
|
+
# Araç örüntü tanımları — sezgisel, savunulabilir ama kesin değil
|
|
22
|
+
# ---------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
# Her araç için ağırlıklı örüntü listesi: (regex_pattern, ağırlık)
|
|
25
|
+
_ARAC_ORNUNTULERI: dict[str, list[tuple[str, float]]] = {
|
|
26
|
+
"copilot": [
|
|
27
|
+
# GitHub Copilot: kısa, özlü satır içi yorumlar, tip bildirimleri yok
|
|
28
|
+
(r"#\s+[A-Z][a-z].{5,40}$", 0.15), # tek satır başlık yorum
|
|
29
|
+
(r"def \w+\([^)]{0,30}\):\s*$", 0.10), # parametresiz/minimal fonksiyon
|
|
30
|
+
(r"#\s+TODO:", 0.10), # TODO yorumları
|
|
31
|
+
(r"^\s{4}pass\s*$", 0.08), # pass ile biten fonksiyonlar
|
|
32
|
+
(r"return \w+\.get\(", 0.07), # .get() pattern
|
|
33
|
+
],
|
|
34
|
+
"cursor": [
|
|
35
|
+
# Cursor: detaylı docstring, tip ipucu zenginliği
|
|
36
|
+
(r'"""[\s\S]{20,200}"""', 0.20), # uzun docstring
|
|
37
|
+
(r":\s*(str|int|float|bool|list|dict|Optional)", 0.15), # tip ipuçları
|
|
38
|
+
(r"->.*:\s*$", 0.12), # dönüş tipi bildirimi
|
|
39
|
+
(r"from typing import", 0.10), # typing modülü
|
|
40
|
+
(r"@dataclass", 0.10), # dataclass kullanımı
|
|
41
|
+
],
|
|
42
|
+
"claude": [
|
|
43
|
+
# Claude: yapılandırılmış çok satırlı açıklamalar, Türkçe/çok dilli yorum
|
|
44
|
+
(r"#\s+\d+\.\s+\w", 0.18), # numaralı adım yorumları
|
|
45
|
+
(r"\"\"\"[\s\S]*Args:[\s\S]*Returns:", 0.20), # Args/Returns docstring
|
|
46
|
+
(r"#\s+─{3,}", 0.15), # ayırıcı çizgi yorumlar
|
|
47
|
+
(r"raise \w+Error\(f[\"']", 0.10), # f-string hata mesajları
|
|
48
|
+
(r"from __future__ import annotations", 0.12), # modern annotation
|
|
49
|
+
],
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
# Minimum güven eşiği — altındaysa "unknown" döndür
|
|
53
|
+
_MIN_GUVEN = 0.15
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass
|
|
57
|
+
class AIAracTahmini:
|
|
58
|
+
"""Tek dosya için AI araç tahmini."""
|
|
59
|
+
|
|
60
|
+
arac: str # "copilot" | "cursor" | "claude" | "unknown"
|
|
61
|
+
guven: float # 0.0–1.0
|
|
62
|
+
puan_detayi: dict[str, float] # araç → ham puan
|
|
63
|
+
uyari: str = (
|
|
64
|
+
"Bu tespit örüntü tabanlı bir tahmindir — kesin değildir."
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def guess_ai_tool(file_path: str, code: str) -> AIAracTahmini:
|
|
69
|
+
"""
|
|
70
|
+
Dosya için olası AI aracı tahmini ve güven skoru döndür.
|
|
71
|
+
|
|
72
|
+
Strateji:
|
|
73
|
+
Her araç için tanımlı regex örüntüleri koda uygulanır, ağırlıklı
|
|
74
|
+
eşleşme sayısına göre toplam puan hesaplanır. En yüksek puanlı
|
|
75
|
+
araç, minimum güven eşiğini geçiyorsa seçilir.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
file_path: Dosya yolu (uzantı filtresi için kullanılır)
|
|
79
|
+
code: Dosyanın kaynak kodu
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
AIAracTahmini nesnesi
|
|
83
|
+
"""
|
|
84
|
+
satirlar = code.splitlines()
|
|
85
|
+
puan: dict[str, float] = {arac: 0.0 for arac in _ARAC_ORNUNTULERI}
|
|
86
|
+
|
|
87
|
+
for arac, ornuntular in _ARAC_ORNUNTULERI.items():
|
|
88
|
+
for desen, agirlik in ornuntular:
|
|
89
|
+
eslesme_sayisi = sum(
|
|
90
|
+
1 for satir in satirlar if re.search(desen, satir)
|
|
91
|
+
)
|
|
92
|
+
# Satır sayısına normalize et (büyük dosyalarda haksız avantajı engelle)
|
|
93
|
+
norm = eslesme_sayisi / max(len(satirlar), 1)
|
|
94
|
+
puan[arac] += norm * agirlik * 10 # 0-10 arası ölçek
|
|
95
|
+
|
|
96
|
+
# Normalize et — toplam puana göre güven hesapla
|
|
97
|
+
toplam = sum(puan.values())
|
|
98
|
+
if toplam < 0.01:
|
|
99
|
+
return AIAracTahmini(
|
|
100
|
+
arac="unknown",
|
|
101
|
+
guven=0.0,
|
|
102
|
+
puan_detayi={k: round(v, 3) for k, v in puan.items()},
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
en_iyi_arac = max(puan, key=lambda k: puan[k])
|
|
106
|
+
guven = puan[en_iyi_arac] / toplam
|
|
107
|
+
|
|
108
|
+
# Minimum eşiği geçemiyen → unknown
|
|
109
|
+
if guven < _MIN_GUVEN:
|
|
110
|
+
en_iyi_arac = "unknown"
|
|
111
|
+
|
|
112
|
+
return AIAracTahmini(
|
|
113
|
+
arac=en_iyi_arac,
|
|
114
|
+
guven=round(guven, 3),
|
|
115
|
+
puan_detayi={k: round(v, 3) for k, v in puan.items()},
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def analyze_repo_tools(
|
|
120
|
+
repo_path: Path,
|
|
121
|
+
db_path: Path,
|
|
122
|
+
) -> dict[str, dict[str, float]]:
|
|
123
|
+
"""
|
|
124
|
+
Repo genelinde araç bazlı dosya analizi yap ve sonuçları DB'ye kaydet.
|
|
125
|
+
|
|
126
|
+
Returns:
|
|
127
|
+
{arac: {"dosya_sayisi": N, "avg_ai_probability": X}} sözlüğü
|
|
128
|
+
"""
|
|
129
|
+
from codedna.scorer import scan_repository
|
|
130
|
+
from codedna.db import get_connection
|
|
131
|
+
|
|
132
|
+
desteklenen = {".py", ".js", ".jsx", ".ts", ".tsx"}
|
|
133
|
+
sonuclar = scan_repository(repo_path, max_files=200)
|
|
134
|
+
|
|
135
|
+
# Araç sayaçları
|
|
136
|
+
arac_istatistik: dict[str, dict[str, list]] = {
|
|
137
|
+
"copilot": {"ai_prob": [], "understanding": []},
|
|
138
|
+
"cursor": {"ai_prob": [], "understanding": []},
|
|
139
|
+
"claude": {"ai_prob": [], "understanding": []},
|
|
140
|
+
"unknown": {"ai_prob": [], "understanding": []},
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
for sonuc in sonuclar:
|
|
144
|
+
if Path(sonuc.file_path).suffix.lower() not in desteklenen:
|
|
145
|
+
continue
|
|
146
|
+
try:
|
|
147
|
+
kod = Path(sonuc.file_path).read_text(encoding="utf-8", errors="replace")
|
|
148
|
+
except Exception:
|
|
149
|
+
continue
|
|
150
|
+
|
|
151
|
+
tahmin = guess_ai_tool(sonuc.file_path, kod)
|
|
152
|
+
|
|
153
|
+
# DB'ye kaydet — en son file_score kaydını güncelle
|
|
154
|
+
try:
|
|
155
|
+
with get_connection(db_path) as conn:
|
|
156
|
+
conn.execute(
|
|
157
|
+
"""
|
|
158
|
+
UPDATE file_scores
|
|
159
|
+
SET ai_tool_guess = ?
|
|
160
|
+
WHERE file_path = ?
|
|
161
|
+
AND id = (
|
|
162
|
+
SELECT id FROM file_scores
|
|
163
|
+
WHERE file_path = ?
|
|
164
|
+
ORDER BY id DESC LIMIT 1
|
|
165
|
+
)
|
|
166
|
+
""",
|
|
167
|
+
(tahmin.arac, sonuc.file_path, sonuc.file_path),
|
|
168
|
+
)
|
|
169
|
+
except Exception:
|
|
170
|
+
pass
|
|
171
|
+
|
|
172
|
+
if tahmin.arac in arac_istatistik:
|
|
173
|
+
arac_istatistik[tahmin.arac]["ai_prob"].append(sonuc.ai_probability)
|
|
174
|
+
else:
|
|
175
|
+
arac_istatistik["unknown"]["ai_prob"].append(sonuc.ai_probability)
|
|
176
|
+
|
|
177
|
+
# DB'den anlama skorlarını araç bazlı topla
|
|
178
|
+
try:
|
|
179
|
+
with get_connection(db_path) as conn:
|
|
180
|
+
rows = conn.execute(
|
|
181
|
+
"""
|
|
182
|
+
SELECT fs.ai_tool_guess, fs.understanding_score
|
|
183
|
+
FROM file_scores fs
|
|
184
|
+
WHERE fs.ai_tool_guess IS NOT NULL
|
|
185
|
+
AND fs.understanding_score IS NOT NULL
|
|
186
|
+
"""
|
|
187
|
+
).fetchall()
|
|
188
|
+
for r in rows:
|
|
189
|
+
arac = r["ai_tool_guess"] or "unknown"
|
|
190
|
+
if arac in arac_istatistik:
|
|
191
|
+
arac_istatistik[arac]["understanding"].append(
|
|
192
|
+
float(r["understanding_score"])
|
|
193
|
+
)
|
|
194
|
+
except Exception:
|
|
195
|
+
pass
|
|
196
|
+
|
|
197
|
+
# Sonuçları hesapla
|
|
198
|
+
cikti: dict[str, dict[str, float]] = {}
|
|
199
|
+
for arac, veri in arac_istatistik.items():
|
|
200
|
+
if not veri["ai_prob"]:
|
|
201
|
+
continue
|
|
202
|
+
avg_ai = sum(veri["ai_prob"]) / len(veri["ai_prob"])
|
|
203
|
+
avg_und = (
|
|
204
|
+
sum(veri["understanding"]) / len(veri["understanding"])
|
|
205
|
+
if veri["understanding"] else None
|
|
206
|
+
)
|
|
207
|
+
cikti[arac] = {
|
|
208
|
+
"dosya_sayisi": len(veri["ai_prob"]),
|
|
209
|
+
"avg_ai_probability": round(avg_ai, 3),
|
|
210
|
+
"avg_understanding": round(avg_und, 2) if avg_und is not None else None,
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return cikti
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def compare_tools_in_repo(repo_path: Path, db_path: Path) -> dict:
|
|
217
|
+
"""
|
|
218
|
+
Repo genelinde araç bazlı ortalama anlama skoru ve AI olasılığı karşılaştırması.
|
|
219
|
+
|
|
220
|
+
Returns:
|
|
221
|
+
{"copilot": {...}, "cursor": {...}, ...} sözlüğü
|
|
222
|
+
"""
|
|
223
|
+
return analyze_repo_tools(repo_path, db_path)
|